package cn.baage.campus.utils;

import java.time.Duration;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;


/**
 * @Description: 时间工具
 * @Author: 八阿哥
 * @url: baage.cn
 * @Version: 1.0
 **/
public class DateUtils {


    /**
     * 获取时间差展示
     *
     * @param pastTime 原始时间
     * @return 时间差展示
     */
    public static String formatTimeDifferenceNow(Date pastTime) {
        return formatTimeDifference(LocalDateTime.now(), pastTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
    }


    /**
     * 获取时间差展示
     *
     * @param pastTime 原始时间
     * @return 时间差展示
     */
    public static String formatTimeDifferenceNow(LocalDateTime pastTime) {
        return formatTimeDifference(LocalDateTime.now(), pastTime);
    }

    /**
     * 获取时间差展示
     *
     * @param currentTime 当前时间
     * @param pastTime 原始时间
     * @return 时间差展示
     */
    public static String formatTimeDifference(LocalDateTime currentTime, LocalDateTime pastTime) {
        Duration duration = Duration.between(pastTime, currentTime);
        long seconds = duration.getSeconds();
        if (seconds < 10) {
            return "刚刚";
        } else if (seconds < 60) {
            return seconds + "秒前";
        } else if (seconds < 3600) {
            return (seconds / 60) + "分钟前";
        } else if (seconds < 86400) {
            return (seconds / 3600) + "小时前";
        } else if (seconds < 2592000) {
            return (seconds / 86400) + "天前";
        } else {
            // 超过一个月，返回具体日期
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
            return pastTime.format(formatter);
        }
    }
}
